(function(){const wpcom=window.wpcom||{};wpcom.actionbar={};wpcom.actionbar.data=window.actionbardata;const fbd=wpcom.actionbar.data;function postAction(params={},callback=()=>{}){if(!params.action){return;} fetch(fbd.xhrURL,{method:'POST',body:new URLSearchParams(params),headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With':'XMLHttpRequest',},}).then(callback);} let wpcomProxyPromise;function wpcomProxyLoader(){if(!wpcomProxyPromise){wpcomProxyPromise=new Promise((resolve,reject)=>{if(window.WPCOM_Proxy_Request){resolve(window.WPCOM_Proxy_Request);}else{const proxyScript=document.createElement('script');proxyScript.src=fbd.proxyScriptUrl;proxyScript.async=true;document.body.appendChild(proxyScript);proxyScript.addEventListener('load',()=>resolve(window.WPCOM_Proxy_Request));proxyScript.addEventListener('error',(error)=>reject(error));}});} return wpcomProxyPromise;} function postToApi(path,namespace,body={}){const request={path,body,method:'POST',apiNamespace:namespace,};wpcomProxyLoader().then((proxy)=>proxy(request));} function bumpStat(stat,callback){postAction({action:'actionbar_stats',stat:stat,},callback);} function followRequest(action){postAction({action:action,_wpnonce:fbd.nonce,source:'actionbar',blog_id:fbd.siteID,});} let lastScrollTop=window.scrollY||window.pageYOffset||0;if(window!=window.top){return;} const actionbar=document.querySelector('#actionbar');if(!actionbar){return;} actionbar.removeAttribute('style');if(fbd.statusMessage){showActionBarStatusMessage(fbd.statusMessage);} let isFollowBubbleOpen=false;const follow=actionbar.querySelector('.actnbr-actn-follow');const notifyPostsToggle=actionbar.querySelector('#toggle-input-notify-posts');const emailPostsToggle=actionbar.querySelector('#toggle-input-email-posts');const emailCommentsToggle=actionbar.querySelector('#toggle-input-email-comments');const frequencyOptions=actionbar.querySelectorAll('.segmented-control__link');const instantlyOption=actionbar.querySelector('.frequency-instantly');const dailyOption=actionbar.querySelector('.frequency-daily');const weeklyOption=actionbar.querySelector('.frequency-weekly');if(notifyPostsToggle){notifyPostsToggle.addEventListener('click',(e)=>{e.preventDefault();const isEnabling=e.target.parentElement.classList.toggle('is-checked');const restPath=`/read/sites/${fbd.siteID}/notification-subscriptions/${isEnabling?'new':'delete'}`;postToApi(restPath,'wpcom/v2');recordTracksEvent('wpcom_actionbar_site_notifications',{enabling:isEnabling,follow_source:'actionbar',url:fbd.siteURL,});});} if(emailPostsToggle){emailPostsToggle.addEventListener('click',(e)=>{e.preventDefault();const isEnabling=e.target.parentElement.classList.toggle('is-checked');const restPath=`/read/site/${fbd.siteID}/post_email_subscriptions/${isEnabling?'new':'delete'}`;let body={};if(isEnabling){body.delivery_frequency=fbd.subsEmailDefault;frequencyOptions.forEach((opt)=>opt.parentElement.classList.remove('is-selected'));actionbar.querySelector(`.frequency-${fbd.subsEmailDefault}`).parentElement.classList.add('is-selected');} actionbar.querySelector('#email-new-posts-details').classList.toggle('is-visible',isEnabling);postToApi(restPath,'rest/v1.2',body);});} if(emailCommentsToggle){emailCommentsToggle.addEventListener('click',(e)=>{e.preventDefault();const isEnabling=e.target.parentElement.classList.toggle('is-checked');const restPath=`/read/site/${fbd.siteID}/comment_email_subscriptions/${isEnabling?'new':'delete'}`;postToApi(restPath,'rest/v1.2');});} const onFrequencyOptionClick=(e,frequencyKey)=>{frequencyOptions.forEach((opt)=>opt.parentElement.classList.remove('is-selected'));e.target.parentElement.classList.add('is-selected');const restPath=`/read/site/${fbd.siteID}/post_email_subscriptions/update`;postToApi(restPath,'rest/v1.2',{delivery_frequency:frequencyKey});};if(frequencyOptions.length>0){instantlyOption.addEventListener('click',(e)=>onFrequencyOptionClick(e,'instantly'));dailyOption.addEventListener('click',(e)=>onFrequencyOptionClick(e,'daily'));weeklyOption.addEventListener('click',(e)=>onFrequencyOptionClick(e,'weekly'));} if(follow){follow.addEventListener('click',(e)=>{e.preventDefault();e.stopPropagation();isFollowBubbleOpen=true;if(fbd.isLoggedIn){showActionBarStatusMessage(`
${fbd.i18n.followedText}
`); bumpStat('followed'); recordTracksEvent('wpcom_actionbar_site_followed', { follow_source: 'actionbar', url: fbd.siteURL, }); followRequest('ab_subscribe_to_blog'); const defaultEmailFrequency = fbd.subsEmailDefault; if (defaultEmailFrequency !== 'never') { emailPostsToggle.click(); } notifyPostsToggle && notifyPostsToggle.click(); } else { showActionBarFollowForm(); } }); } // Unfollow site const unfollow = actionbar.querySelector('.actnbr-actn-following'); if (unfollow) { unfollow.addEventListener('click', (e) => { e.preventDefault(); unfollow.classList.add('no-display'); follow.classList.remove('no-display'); bumpStat('unfollowed'); recordTracksEvent('wpcom_actionbar_site_unfollowed', { follow_source: 'actionbar', url: fbd.siteURL, }); followRequest('ab_unsubscribe_from_blog'); const btn = actionbar.querySelector('.actnbr-btn'); btn.classList.add('actnbr-hidden'); const followNotificationCheckedToggles = actionbar.querySelectorAll('.actnbr-site-settings__toggle.is-checked'); followNotificationCheckedToggles.forEach((t) => t.classList.remove('is-checked')); }); } // Dismiss follow bubble when clicking on document document.addEventListener('click', (e) => { const isClickInPopup = !!e.target.closest('#follow-bubble'); if (isClickInPopup) { return; } const btn = actionbar.querySelector('.actnbr-btn'); if (isFollowBubbleOpen && !btn.classList.contains('actnbr-hidden')) { isFollowBubbleOpen = false; btn.classList.add('actnbr-hidden'); } }); // Show shortlink prompt const shortlink = actionbar.querySelector('.actnbr-shortlink a'); if (shortlink) { shortlink.addEventListener('click', (e) => { e.preventDefault(); if (window.electron) { // Electron does not support the window.prompt API. // So we have to copy to the clipboard by sending the // content to be copied through Electron's IPC channels. window.electron.send('copy-text-to-clipboard', fbd.shortlink); } else { window.prompt('Shortlink: ', fbd.shortlink); } }); } const ellipsis = actionbar.querySelector('.actnbr-ellipsis'); let isMenuOpen = false; if (ellipsis) { ellipsis.addEventListener('click', (e) => { const closestLink = e.target.closest('a'); if (closestLink && closestLink.classList.contains('actnbr-action')) { return false; } ellipsis.classList.toggle('actnbr-hidden'); setTimeout(() => { if (!ellipsis.classList.contains('actnbr-hidden')) { bumpStat('show_more_menu'); isMenuOpen = true; } }, 10); }); } // Dismiss menu when clicking on document document.addEventListener('click', () => { if (isMenuOpen) { ellipsis.classList.add('actnbr-hidden'); isMenuOpen = false; } }); // Fold/Unfold const fold=actionbar.querySelector('.actnbr-fold');if(fold){fold.addEventListener('click',(e)=>{e.preventDefault();const link=fold.querySelector('a');if(actionbar.classList.contains('actnbr-folded')){link.textContent=fbd.i18n.foldBar;actionbar.classList.remove('actnbr-folded');postAction({action:'unfold_actionbar'});}else{link.textContent=fbd.i18n.unfoldBar;actionbar.classList.add('actnbr-folded');postAction({action:'fold_actionbar'});}});} function statsOnClick(selector,stat,additionalEffect){const el=actionbar.querySelector(selector);if(el){el.addEventListener('click',createStatsBumperEventHandler(stat,additionalEffect));}} statsOnClick('.actnbr-sitename a','clicked_site_title');statsOnClick('.actnbr-customize a','customized');statsOnClick('.actnbr-folded-customize a','customized');statsOnClick('.actnbr-theme a','explored_theme');statsOnClick('.actnbr-edit a','edited');statsOnClick('.actnbr-stats a','clicked_stats');statsOnClick('.flb-report a','reported_content');statsOnClick('.actnbr-follows a','managed_following');statsOnClick('.actnbr-login-nudge a','clicked_login_nudge');statsOnClick('.actnbr-signup a','clicked_signup_link');statsOnClick('.actnbr-login a','clicked_login_link');statsOnClick('.actnbr-subs a','clicked_manage_subs_link');statsOnClick('.actnbr-reader a','view_reader');if(shortlink){shortlink.addEventListener('click',bumpStat('copied_shortlink'));} const bubbleForm=actionbar.querySelector('.actnbr-follow-bubble form');if(bubbleForm){bubbleForm.addEventListener('submit',createStatsBumperEventHandler('submit_follow_form',()=>{const button=bubbleForm.querySelector('button');if(button){button.setAttribute('disabled',true);}}));} function handleScroll(){const scrollTop=window.scrollY||window.pageYOffset||0;const isHidden=actionbar.classList.contains('actnbr-hidden');if(scrollTop ul > li:not(.actnbr-hidden) > .actnbr-popover').length===0){actionbar.classList.add('actnbr-hidden');actionbar.querySelectorAll('li').forEach((menu)=>menu.classList.add('actnbr-hidden'));}} lastScrollTop=scrollTop;} document.addEventListener('scroll',handleScroll,{passive:true});function recordTracksEvent(eventName,eventProps){eventProps=eventProps||{};window._tkq=window._tkq||[];window._tkq.push(['recordEvent',eventName,eventProps]);} function createStatsBumperEventHandler(stat,additionalEffect){const completedEvents={};return function eventHandler(event){if(completedEvents[event.timeStamp]){delete completedEvents[event.timeStamp];if(event.type==='submit'){event.target.submit();} if(typeof additionalEffect==='function'){return additionalEffect(event);} return true;} event.preventDefault();event.stopPropagation();function dispatchOriginalEvent(){const newEvent=new event.constructor(event.type,event);completedEvents[newEvent.timeStamp]=true;event.target.dispatchEvent(newEvent);} bumpStat(stat,dispatchOriginalEvent);};} function showActionBarFollowForm(){const form=actionbar.querySelector('.actnbr-follow-bubble form');form.removeAttribute('style');const button=actionbar.querySelector('.actnbr-btn');button&&button.classList.toggle('actnbr-hidden');setTimeout(()=>{actionbar.querySelector('.actnbr-email-field').focus();},10);} function showActionBarStatusMessage(message){follow&&follow.classList.add('no-display');unfollow&&unfollow.classList.remove('no-display');const msgEl=actionbar.querySelector('.actnbr-follow-bubble .actnbr-message');if(msgEl){msgEl.innerHTML=message;} const button=actionbar.querySelector('.actnbr-btn');button&&button.classList.remove('actnbr-hidden');}})();